package IUSECASE;

import IBO.ICodePostal;
import IBO.IEmployeInterne;
import IBO.IIntervention;
import IBO.ITechnicien;
import IBO.IZoneGeographique;
import IGUI.Subscriber;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.GregorianCalendar;
import java.util.Vector;

public interface IUC_GestionEmployes extends Remote{

        //Employe interne
        void creerEmploye(  int matricule, String nom, String prenom, String rue, String numero, 
                            String[] codePostal, String telephone, String email, Boolean[] role, 
                            String fonction, String password) throws RemoteException;
        
        public void modifierEmploye(int matricule, String nom, String prenom, String rue, String numero, String codePostal, 
                                    String commune, String telephone, String email, Boolean[] role, String password)
                                    throws RemoteException; 
                
        Vector<IEmployeInterne> listerEmployes()throws RemoteException;
        
        Vector<IEmployeInterne> rechercherEmploye(int matricule) throws RemoteException;
        
        Vector<IEmployeInterne> rechercherEmploye(String nom, String prenom) throws RemoteException;
        
        IEmployeInterne loginEmployeInterne(int matricule, String password) throws RemoteException;
        
        //Technicien
        public void creerTechnicien(int matricule, String nom, String prenom, String rue, String numero, 
                                    String[] codePostal, String telephone, String email, Boolean[] role, 
                                    String fonction, String password, IZoneGeographique zone) throws RemoteException;

        public void modifierTechnicien( int matricule, String nom, String prenom, String rue, String numero, String codePostal, 
                                        String commune, String telephone, String email, Boolean[] role, String password, 
                                        IZoneGeographique zone) 
                                        throws RemoteException;
        
        Vector<ITechnicien> listerTechniciens()throws RemoteException;
        
        Vector<ITechnicien> rechercherTechnicien(int matricule) throws RemoteException;
        
        Vector<ITechnicien> rechercherTechnicien(String nom, String prenom) throws RemoteException;
        
        Vector<IIntervention> listerIntervention(ITechnicien technicien) throws RemoteException;
        
        Vector<IIntervention> listerIntervention(ITechnicien technicien, GregorianCalendar dateIntervention) throws RemoteException;
        
        Vector<IZoneGeographique> listerZone() throws RemoteException;
        
        ITechnicien loginTechnicien(int matricule, String password) throws RemoteException;
        
        //Employe
        Vector<ICodePostal> rechercherCP(String codePostal) throws RemoteException; 
        
        Vector<ICodePostal> rechercherCommune(String commune) throws RemoteException;
        
        public void subscribingListeTechniciens(Subscriber subscriber) throws RemoteException;    
        public void unSubscribingListeTechniciens(Subscriber subscriber) throws RemoteException;
        public void subscribingListeEmployesInt(Subscriber subscriber) throws RemoteException;       
        public void unSubscribingListeEmployesInt(Subscriber subscriber) throws RemoteException;       
}